<template>
  <div class="YLInput">
    <!-- 管理数据，实现双向绑定 -->
    <!-- 使用 $attrs 集成其他属性 就不用在props中一个个声明了 -->
    <input :type="type" :value="value" @input="onInput" v-bind="$attrs" />
  </div>
</template>
<script>
import emitter from '../../../mixins/emitter';
export default {
  mixins: [emitter],
  name: 'YLInput',
  componentName: 'YLInput',
  inheritAttrs: false,
  props: {
    value: { type: String, default: '' },
    type: { type: String, default: 'text' },
  },
  methods: {
    onInput(e) {
      this.$emit('input', e.target.value);

      // 触发校验
      // $parent 并不是很严谨
      // this.$parent.$emit('validate');
      this.dispatch('YLFormItem', 'validate');
    },
  },
};
</script>
